Gitlab Get User Tasks Tool
Retrieve and filter a user's pending tasks from GitLab using customizable criteria, such as task type or creation date, to streamline task management and improve workflow efficiency.
Instructions
获取当前用户的待办任务,支持多种过滤条件。
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | 需要返回的字段路径数组,支持数组或逗号分隔字符串,用于过滤 API 响应字段。 示例: - ["id", "name", "owner.username"] - "id,name,owner.username" - undefined | |
| taskFilterType | No | 任务过滤类型 |
Implementation Reference
- Handler function that executes the tool logic: processes taskFilterType, constructs GitLab API params, fetches merge requests, filters fields if specified, and returns JSON stringified response or error.async execute(args: unknown, context: Context<Record<string, unknown> | undefined>) { const typedArgs = args as { taskFilterType?: string; fields?: string[]; }; try { const params: Record<string, any> = {}; switch (typedArgs.taskFilterType) { case "ALL": break; case "ASSIGNED_MRS": params.include_assigned_mrs = true; break; case "REVIEW_MRS": params.include_review_mrs = true; break; case "MY_ISSUES": params.include_issues = true; break; case "MY_PIPELINES": params.include_pipelines = true; break; case "MR_CREATED_TODAY": params.type = "merge_request"; params.created_after = new Date().toISOString().split("T")[0] + "T00:00:00Z"; params.created_before = new Date().toISOString().split("T")[0] + "T23:59:59Z"; break; case "ISSUES_CREATED_TODAY": params.type = "issue"; params.created_after = new Date().toISOString().split("T")[0] + "T00:00:00Z"; params.created_before = new Date().toISOString().split("T")[0] + "T23:59:59Z"; break; case "CUSTOM": break; default: break; } const client = createGitlabClientFromContext(context); const response = await client.apiRequest("/merge_requests", "GET", params); if (typedArgs.fields) { const filteredResponse = filterResponseFields(response, typedArgs.fields); return { content: [{ type: "text", text: JSON.stringify(filteredResponse) }] } as ContentResult; } return { content: [{ type: "text", text: JSON.stringify(response) }] } as ContentResult; } catch (error: any) { return { content: [ { type: "text", text: `GitLab MCP 工具调用异常:${error?.message || String(error)}` } ], isError: true }; } }
- Input schema using Zod: defines optional taskFilterType enum and fields array.parameters: z.object({ taskFilterType: z.enum([ "ALL", "ASSIGNED_MRS", "REVIEW_MRS", "MY_ISSUES", "MY_PIPELINES", "MR_CREATED_TODAY", "ISSUES_CREATED_TODAY", "CUSTOM", ]).optional().describe("任务过滤类型"), fields: createFieldsSchema(), }),
- src/gitlab-tools-sdk.ts:133-149 (registration)Primary registration function for FastMCP: includes GitlabGetUserTasksTool in fastmcpTools array and registers via server.addTool(tool) in the loop.export function registerGitLabToolsForFastMCP(server: FastMCP, options: GitLabToolsRegistryOptions = {}) { const { enableLogger = process.env.ENABLE_LOGGER === 'true' } = options; // Configure logger if enabled if (enableLogger) { gitlabApiClient.setLogger(console); } // Register tools based on filter options fastmcpTools.forEach(tool => { const standardizedName = toolNameMapping[tool.name as keyof typeof toolNameMapping]; if (shouldRegisterTool(standardizedName as GitLabToolName, options.toolFilter)) { // GitLabTool is now fully compatible with FastMCP's base type, can be registered directly server.addTool(tool); } }); }
- src/gitlab-tools-sdk.ts:71-80 (registration)fastmcpTools array that includes GitlabGetUserTasksTool for registration.const fastmcpTools = [ GitlabAcceptMRTool, GitlabCreateMRCommentTool, GitlabCreateMRTool, GitlabGetUserTasksTool, GitlabRawApiTool, GitlabSearchProjectDetailsTool, GitlabSearchUserProjectsTool, GitlabUpdateMRTool, ];
- src/gitlab-tools-sdk.ts:57-66 (registration)toolNameMapping that maps GitlabGetUserTasksTool.name to standardized tool name.const toolNameMapping = { [GitlabSearchUserProjectsTool.name]: "Gitlab_Search_User_Projects_Tool", [GitlabGetUserTasksTool.name]: "Gitlab_Get_User_Tasks_Tool", [GitlabSearchProjectDetailsTool.name]: "Gitlab_Search_Project_Details_Tool", [GitlabCreateMRTool.name]: "Gitlab_Create_MR_Tool", [GitlabUpdateMRTool.name]: "Gitlab_Update_MR_Tool", [GitlabAcceptMRTool.name]: "Gitlab_Accept_MR_Tool", [GitlabCreateMRCommentTool.name]: "Gitlab_Create_MR_Comment_Tool", [GitlabRawApiTool.name]: "Gitlab_Raw_API_Tool", } as const;